from UserInterface.InvokeInstruction import GetInvokeInstTable
from UserInterface.InvokeInstruction import InvokeInstruction
from UserInterface.UIException import *

class InvokeMode():
    def __init__(self, logger, cfg) -> None:
        InvokeInstruction.SetLogger(logger)
        InvokeInstruction.SetCfg(cfg)

    def Execute(self, opt, *args) -> None:
        invokeInstTable = GetInvokeInstTable()
        if opt not in invokeInstTable:
            raise UIUnsupportedOption('Unsupported option')
        
        inst:InvokeInstruction = invokeInstTable[opt]
        inst.Execute(args)
